from typing import List, Union  # 导入类型提示模块
from pydantic import BaseModel  # 导入Pydantic基类

# 这个文件存放了Pydantic的模型定义，用于定义数据格式 和验证 用于创建或读取数据

# 定义基础的Item模型
class ItemBase(BaseModel):
    title: str  # 标题，必填字段
    description: Union[str, None] = None  # 描述，可选字段，默认为None

# 定义用于创建Item的模型
class ItemCreate(ItemBase):
    pass  # 继承ItemBase，无额外字段

# 定义完整的Item模型
class Item(ItemBase):
    id: int  # 项目ID
    owner_id: int  # 所属用户ID

    class Config:
        orm_mode = True  # 启用ORM模式，允许直接从数据库模型获取数据

# 定义基础的User模型
class UserBase(BaseModel):
    email: str  # 用户邮箱，必填字段

# 定义用于创建User的模型
class UserCreate(UserBase):
    password: str  # 用户密码，必填字段

# 定义完整的User模型
class User(UserBase):
    id: int  # 用户ID
    is_active: bool  # 用户是否激活
    items: List[Item] = []  # 用户拥有的项目列表，默认为空列表

    class Config:
        orm_mode = True  # 启用ORM模式，允许直接从数据库模型获取数据
